﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Configuration;
using System.Data.SqlClient;

namespace Wild2.Models.Browsers
{
    public class BrowserSelector
    {
        public class BrowserClass
        {
            public string Version { get; set; } //WAP, PDA, WEB, Other

            public string FontSize { get; set; }

            public List<String> NeededScripts { get; set; } //Нужные скрипты для работы данного стиля браузера

            public List<String> NeededStyles { get; set; } //Нужные стили для работы данного стиля браузера    
        }

        public static bool IsMobileDevice()
        {
            bool result = HttpContext.Current.Request.Browser.IsMobileDevice;
            if ((!result) && (!String.IsNullOrEmpty(HttpContext.Current.Request.UserAgent)))
            {
                result = HttpContext.Current.Request.UserAgent.Contains("Opera Mini");
            }
            return result;
        }

        public BrowserClass GetVersionFromName(string version)
        {
            BrowserClass bc = new BrowserClass();
            bc.NeededScripts = new List<string>();
            bc.NeededStyles = new List<string>();
            //if (version == "wap")
            //{
            //    bc.NeededStyles.Add("<link rel=\"stylesheet\" href=\"/Content/wap.css\" type=\"text/css\" />");
            //    bc.Version = "wap";
            //    bc.FontSize = "12px";
            //}
            //if (version == "pda")
            //{
                bc.NeededStyles.Add("<link rel=\"stylesheet\" href=\"/Content/css.css\" type=\"text/css\" />");
                bc.Version = "pda";
                bc.FontSize = "12px";
            //}
            //if (version == "web")
            //{
            //    bc.NeededStyles.Add("<link rel=\"stylesheet\" href=\"/Content/web.css\" type=\"text/css\" />");
            //    bc.Version = "web";
            //    bc.FontSize = "12px";
            //}
            return bc;
        }

        public BrowserClass GetVersionFromBrowser(string userAgent)
        {
            //TODO: В зависимости от юзерагента отправлять разные версии
            if (IsMobileDevice())
            {
                return GetVersionFromName("pda");
            }
            else
            {
                return GetVersionFromName("web");
            }
        }

        //public BrowserClass DetectBrowser(string userAgent)
        //{
        //    BrowserClass bc = new BrowserClass();
        //    bc.NeededScripts = new List<string>();
        //    bc.NeededStyles = new List<string>();
        //    {
        //        bc.NeededStyles.Add("<link rel=\"stylesheet\" href=\"/Content/css.css\" type=\"text/css\" />");
        //        bc.Version = "pda";
        //        //bc.FontSize = "medium";
        //        bc.FontSize = "12px";
        //    }
        //    return bc;
        //}

        public static void SetVersion(string version)
        {
            if (version == "pda" || version == "wap" || version == "web") HttpContext.Current.Session[Wild2.Models.Constants.SessionConstants.VERSION] = version;
            Int32? userId = Auth.AuthOnSite.GetUserId();
            if (userId.HasValue)
            {
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnect"].ConnectionString))
                {
                    using (SqlCommand cmd = new SqlCommand("UPDATE [Users] SET [skin] = @V WHERE ([ID] = @ID)", conn))
                    {
                        cmd.Parameters.Add("@ID", System.Data.SqlDbType.Int).Value = userId;
                        cmd.Parameters.Add("@V", System.Data.SqlDbType.NVarChar, 10).Value = version;
                        cmd.Connection.Open();
                        cmd.ExecuteNonQuery();
                        cmd.Connection.Close();
                    }
                }
            }
        }
    }
}